编写 Skill 是对灵活性和确定性的平衡
提示词的灵活性与代码的确定性:Agent Skill 的设计哲学
在智能体工程(Agentic Engineering)的浪潮中,我们正经历从“编写指令”到“构建生命体”的认知跨越。然而,99% 的开发者在设计 Agent Skill 时,依然将其等同于传统的 API 封装。
这种认知偏差,导致了无数 AI 应用在实验室环境表现惊艳,但在面对真实的、高熵的生产环境时,瞬间崩塌。
一个真正工业级的 Skill,本质上不是一段功能函数,而是两股对立力量的终极契约:【灵活性】与【确定性】。
1. 提示词:拥抱高熵的“灵活性”
在系统架构的视角下,自然语言和用户意图本质上是“高熵”的。
- 模糊性(Ambiguity): 真实世界的用户不会按照 Swagger 文档输入数据。他们会打错别字、逻辑跳跃、提供不完整的上下文。
- 多样性(Diversity): 同一个意图有成千上万种表达方式。
提示词(Prompt) 的天职,就是充当这个高熵世界的“吸能缓冲区”。它利用大模型的语义理解能力,优雅地吸收这些模糊性。它的核心竞争力在于极度宽容——它像一块海绵,从混沌中提取出执行任务所需的初始参数。
2. 代码:实现熵减的“确定性”
一旦意图被解析并交接给底层逻辑,系统就必须进入执行的“铁律”阶段。
- 一致性(Consistency): 无论调用一千次还是一万次,核心逻辑必须产生可预测的结果。
- 边界感(Boundaries): 无论是 Rust 的强类型检查,还是 TypeScript 的接口约束,代码的职责是“严以律己”。
代码(Code) 的使命是消除所有不确定性,捍卫系统的安全边界。在这个阶段,任何“模糊”都是致命的。它的核心竞争力在于极度严谨。
3. 核心哲学:AI 时代的 Postel's Law
我始终认为,高阶的 Skill 设计必须复刻经典互联网协议之父 Jon Postel 的名言:
"Be conservative in what you do, be liberal in what you accept from others." (对自己发送的东西要保守,对接收的东西要自由。)
在 Agentic 架构中,这个哲学演化为:“对输入宽容,对输出严格。”
- 输入端(The Liberal Input): 依靠 Prompt 的灵活性,包容大模型输出的非标格式或用户的凌乱意图,尽最大努力提取意图。
- 输出端(The Conservative Output): 依靠代码的确定性,锁定状态变更和数据产出,确保向系统交付的结果是“熵减”后的干净状态。
4. 范式演进:从“本地工具”到“服务端 Skill”
随着 AI 原生开发的深入,Skill 的形态正在发生根本性转变:从单纯的 API 封装演进为 服务端 Skill(Server-side Skill)。
传统的 API 封装要求调用者(Agent)必须精准对接参数。而 AI 时代的“服务端 Skill”自带 语义网关:
- 知识资产化: 提示词不仅是逻辑,更是企业核心竞争力的封装。深度的领域知识(Domain Knowledge)被封存在服务端 Prompt 中,作为“黑盒”资产,不对外开源,仅通过接口提供服务。
- 协议化调用: 未来将出现类似 MCP(Model Context Protocol)一样的标准协议。调用端通过协议发起意图,服务端 Skill 利用私有的 Prompt 资产进行“语义对齐”,再交由底层代码执行。
这种架构实现了 “灵活性”与“确定性”的物理隔离——让调用端(Agent)保持轻量与泛化,让服务端保持专业与稳健。
5. 致命漏洞:阻抗失配(Impedance Mismatch)
系统最容易崩塌的地方,往往就在这两者的交界处。这就是所谓的**“阻抗失配”**:
- 断崖式失败: LLM 哪怕产生 1% 的灵活幻觉(比如把一个数值误写成了带单位的字符串),都会让底层追求绝对确定性的强类型代码瞬间 Crash。
- 静默毒化(Silent Poisoning): 如果 Prompt 层过度“脑补”意图,而底层代码又缺乏业务级的逻辑校验,系统就会毫无察觉地执行一个“确定的错误”。
6. 架构师的解法:构建自愈型防腐层(ACL)
为了修补这个漏洞,我们需要在“纯软”的提示词和“纯硬”的代码之间,构建一层具有自愈能力的防腐层(Anti-Corruption Layer)。
这层机制应该扮演一个聪明的“安检员”:
- 自动清洗: 尝试将非标数据自动转化为标准类型。
- 默认值兜底: 在不影响业务核心逻辑的前提下,对缺失参数进行合理的补全。
- 最终校验: 在向核心 API 发起请求前,进行最后一次严格的逻辑守卫。
结语
写好一个 Skill,本质上就是在灵活性与确定性之间,画好那道生死分界线。
当你能利用 Prompt 的灵活性去消解现实世界的混沌,同时用代码的确定性去锁定系统的稳态,你才算真正掌握了智能体工程的灵魂。